package com.example.deepschool.repositories;

import com.example.deepschool.Model.Pagination;
import com.example.deepschool.Model.Report;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

@Repository
@Mapper
public interface ReportRepository {
	
	/**
	 * 插入一个新的报告记录。
	 *
	 * @param report 要插入的报告对象。
	 * @return 插入操作影响的行数。
	 */
	Integer insert ( Report report );
	
	/**
	 * 根据ID删除一个报告记录。
	 *
	 * @param id 要删除的报告的ID。
	 * @return 删除操作影响的行数。
	 */
	Integer delete ( Long id );
	
	/**
	 * 更新一个报告记录。
	 *
	 * @param report 要更新的报告对象。
	 * @return 更新操作影响的行数。
	 */
	Integer update ( Report report );
	
	/**
	 * 查询所有没有处理的报告记录。
	 *
	 * @return 返回报告数组，如果不存在任何报告，则返回空数组。
	 */
	Report[] select (@Param("pagination") Pagination pagination);
	
	/**
	 * 根据ID查询一个报告记录。
	 *
	 * @param id 要查询的报告的ID。
	 * @return 查询到的报告对象，如果不存在该报告，则返回null。
	 */
	
	Report selectById (Long id);
	
	/**
	 * 根据举报用户ID查询该用户所有的报告记录。
	 *
	 * @param reporterId 要查询的用户的ID。
	 * @return 查询到的报告数组，如果不存在任何报告，则返回空数组。
	 */
	Report[] selectByReporterId (Long reporterId);
	
	
}

